﻿using System;
using System.Windows.Forms;
using EntitiesAndMappings.Entities;
using ProyectoActivos.Validate;
using ProyectoActivos.Daos;
using ProyectoActivos.Util;

namespace ProyectoActivos.Forms.Operaciones
{
    public partial class FrmEditarTareo : Form, IValidateForm
    {
        private Tareo tareo;
        private Boolean _valido;
        public Boolean CerroSinAccion { get; set; }

        public FrmEditarTareo(Tareo tareo)
        {
            InitializeComponent();
            this.tareo = tareo;
            _valido = true;
            CerroSinAccion = true;
        }

        public void Invalid()
        {
            _valido = false;
        }

        public Boolean IsValid()
        {
            return _valido;
        }

        private void FrmEditarTareo_Load(object sender, EventArgs e)
        {
            cmbTipoTrabajoTareo.Items.Add(new ItemGenericoComboBox() { Id = 1, Descripcion = "Trabajo" });
            cmbTipoTrabajoTareo.Items.Add(new ItemGenericoComboBox() { Id = 2, Descripcion = "Descanso" });
            cmbTipoTrabajoTareo.Items.Add(new ItemGenericoComboBox() { Id = 3, Descripcion = "Tránsito" });
            cmbTipoTrabajoTareo.Items.Add(new ItemGenericoComboBox() { Id = 4, Descripcion = "Vacaciones" });

            ActionExecutor.Execute(this, delegate
            {
                var proyectoDAO = new EntidadGenericaDAO<Proyecto>();
                cmbProyecto.DataSource = proyectoDAO.ListarActivos();
                cmbProyecto.SelectedItem = null;

                var loteDAO = new EntidadGenericaDAO<Lote>();
                cmbLote.DataSource = loteDAO.ListarActivos();
                cmbLote.SelectedItem = null;

                var lugarDAO = new EntidadGenericaDAO<Lugar>();
                cmbLugar.DataSource = lugarDAO.ListarActivos();
                cmbLugar.SelectedItem = null;             

            });

            lblCodigoTrabajador.Text = tareo.Trabajador.Codigo;

            lblFechaTareo.Text = tareo.Fecha.ToShortDateString();

            cmbTipoTrabajoTareo.SelectedIndex = ComboUtils.GetIndice(cmbTipoTrabajoTareo, tareo.TipoTrabajoTareo);
            
            cmbProyecto.SelectedIndex = ComboUtils.GetIndice(cmbProyecto, tareo.Proyecto.Id);

            cmbLote.SelectedIndex = ComboUtils.GetIndice(cmbLote, tareo.Lote.Id);

            cmbLugar.SelectedIndex = ComboUtils.GetIndice(cmbLugar, tareo.Lugar.Id);

            
           
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            CerroSinAccion = false;

            _valido = true;
            errorProvider.Clear();
            FormsAssert.AssertComboBoxSelected(cmbProyecto, errorProvider, this);
            FormsAssert.AssertComboBoxSelected(cmbLote, errorProvider, this);
            FormsAssert.AssertComboBoxSelected(cmbProyecto, errorProvider, this);
            FormsAssert.AssertComboBoxSelected(cmbTipoTrabajoTareo, errorProvider, this);



            ActionExecutor.Execute(this, delegate
            {
                var tareoDAO = new TareoDAO();

                tareo.Proyecto = (Proyecto)cmbProyecto.SelectedItem;
                tareo.Lote = (Lote)cmbLote.SelectedItem;
                tareo.Lugar = (Lugar)cmbLugar.SelectedItem;
                tareo.TipoTrabajoTareo = ((ItemGenericoComboBox)cmbTipoTrabajoTareo.SelectedItem).Id;
                tareoDAO.Update(tareo);
                Close();
            });

        }
    }
}
